import pymysql.cursors

"""
MySQL建表语句：
CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `email` varchar(255) COLLATE utf8_bin NOT NULL,
    `password` varchar(255) COLLATE utf8_bin NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
AUTO_INCREMENT=1 ;
"""

# Connect to the database
# 建立连接
# host需要自己在虚拟机中通过ifconfig命令确认
# 每个人的都不一样
connection = pymysql.connect(host='192.168.44.128',
                             user='root',
                             password='123456',
                             database='spiders',
                             # MySQL驱动
                             cursorclass=pymysql.cursors.DictCursor)

# 使用with建立连接可以在用完时自动关闭
with connection:
    # 建立连接并创建游标cursor
    # 游标cursor：用于执行SQL以及获取结果
    with connection.cursor() as cursor:
        # 准备了一条插入语句
        # %s：表示占位符，待会需要在执行SQL时传入真正的值
        # 如果不使用占位符传值很容易出现SQL注入问题
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # 默认不会自动提交事务，需要手动提交
    # 如果不提交，那么对数据的变更操作（INSERT、UPDATE、DELETE）是不会真正生效的
    connection.commit()

    with connection.cursor() as cursor:
        # 条件查询
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)